package com.jiantong.work.service;

import com.jiantong.work.model.RetailImmunizationRecord;
import io.terminus.common.model.Paging;
import io.terminus.common.model.Response;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * Created by mz on 18/9/17.
 *
 */
public interface RetailImmunizationRecordReadService {

    /**
     * 根据单据Id查询当前流程状态
     * @param id 主键id
     * @return Map<String ,Integer>
     */
    Response<Map<String ,Integer>> findStatusById(Long id);

    /**
     * 根据ID查询单据的详情
     * @param id 主键ID
     * @return RetailImmunizationRecord
     */
    Response<RetailImmunizationRecord> findById(Long id);

    /**
     * 单个养殖场的散户档案分页查询
     * @param pageNo 页码
     * @param pageSize 条数
     * @param breedFactoryId 养殖场ID
     * @param status 状态
     * @return Paging<RetailImmunizationRecord>
     */
    Response<Paging<RetailImmunizationRecord>> paging(Integer pageNo, Integer pageSize,
                                                      Long breedFactoryId,Integer status);

    /**
     * 分页查询多个散户养殖场的 免疫记录情况
     * @param pageNo 页码
     * @param pageSize 条数
     * @param start 从时间
     * @param end 到时间
     * @param breedFactoryId 养殖场ID
     * @param status 状态
     * @return Paging<RetailImmunizationRecord>
     */
    Response<Paging<RetailImmunizationRecord>> pagingForMulti(Integer pageNo, Integer pageSize,
                                                              Date start, Date end,
                                                              Integer breedType , Long villageId,
                                                              Long breedFactoryId, Integer status);


    /**
     * 查询出一个是否免疫的list
     * @param breedFactoryIds 养殖场ids
     * @return List<Boolean>
     */
    Response<List<Boolean>> countIsVaccine(List<Long> breedFactoryIds);

    /**
     * 溯源
     * @param breedFactoryId 养殖场id
     * @param markNumber 耳标号（完整）
     * @return ImmunizationRecord
     */
    Response<RetailImmunizationRecord> findByEarNumber(Long breedFactoryId , String markNumber);

}
